package com.softline.documentsmall.ret;

/**
 * controller返回结果调用工具类封装
 */
public class ReturnVOUtils {

    /**
     * 调用成功状态码
     */
    private static final Integer SUCCESS = 200;

    /**
     * 返回成功调用方法，有返回体
     *
     * @param data
     * @return
     */
    public static ReturnVO success(Object data) {
        return new ReturnVO(SUCCESS, null, new ReturnVO(SUCCESS,null,data));
    }

    /**
     * 返回成功调用方法
     *
     * @return
     */
    public static ReturnVO success() {
        return new ReturnVO(SUCCESS, null, new ReturnVO(SUCCESS,null,null));
    }

    /**
     * 系统内部错误，给无法预知的异常准备，如意外发生的空指针、数组越界、数据库连接异常等
     *
     * @return
     */
    public static ReturnVO systemError() {
        return new ReturnVO(ReturnErrorEnum.SYSTEM_ERROR.getCode(), ReturnErrorEnum.SYSTEM_ERROR.getMsg(), null);
    }

    /**
     * 系统内部错误，可预知的错误，如权限不足导致的403拒绝访问
     */
    public static ReturnVO systemError(ReturnErrorEnum returnErrorEnum) {
        return new ReturnVO(returnErrorEnum.getCode(), returnErrorEnum.getMsg(), null);
    }

    /**
     * 业务执行错误导致的失败，如空指针、数组越界等
     *
     * @return
     */
    public static ReturnVO businessFail(BusinessErrorEnum businessErrorEnum) {
        return new ReturnVO(SUCCESS,null,new ReturnVO(businessErrorEnum.getCode(),businessErrorEnum.getMsg(),null));
    }

    /**
     * 业务执行错误导致的失败，如空指针、数组越界等
     *
     * @return
     */
    public static ReturnVO businessFailCustom(Integer code,String msg) {
        return new ReturnVO(SUCCESS,null,new ReturnVO(code,msg,null));
    }


}
